#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/stat.h>
#include <fcntl.h>

int main(){
  //1.管道文件先写，不写的话读端会阻塞
  if(mkfifo("PIPE",0644)<0){
    perror("mkfifo error!\n");
  } 
  //2.以写方式打开管道文件，写入数据
  int fd = open("PIPE",O_WRONLY);
  if(fd < 0){
    perror("PIPE open error!\n");
  }
  //3.用标准输入向buf里写数据，再将buf的数据写入管道
  char buf[128];
  while(1){
    printf("Please input something:\n");

    ssize_t ret = read(0,buf,sizeof(buf));
    buf[ret] = 0;
    if(strcmp("quit",buf)==0){
      break;
    }
    //4.向管道中写数据
    if(ret>0){
      write(fd,buf,strlen(buf));
    }
    else if(ret == 0){
      perror("read from stdin error\n");
      break;
    }
  }
  return 0;
}
